#include <QtGui/QApplication>
#include <QTime>
#include <mqueue.h>
#include <semaphore.h>
#include <errno.h>
#include <stdio.h>
#include "ventanaconfiguracion.h"

const int CANTIDAD_CAJEROS = 6;

mqd_t colas[CANTIDAD_CAJEROS];
sem_t* semaforos[CANTIDAD_CAJEROS];

void init() {
    struct mq_attr attr;
    attr.mq_maxmsg = 10;
    attr.mq_flags = 0;
    attr.mq_msgsize = 8192;
    attr.mq_curmsgs = 0;
    for (int i = 1; i <= CANTIDAD_CAJEROS; i++) {
        char str[8];
        sprintf(str, "/cola%c", i + 96);
        mq_unlink(str);
        sem_unlink(str);
        semaforos[i] = sem_open(str, O_CREAT, 0644, 10);
        if (semaforos[i] == SEM_FAILED)
            perror("Error creando o abriendo el semaforo");
        colas[i] = mq_open(str, O_CREAT | O_RDONLY, 0644, &attr);
        if (colas[i] == (mqd_t) - 1)
            perror("Error creando o abriendo el buzon");
        mq_close(colas[i]);
        sem_close(semaforos[i]);
    }
}

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    init();

    VentanaConfiguracion w;
    w.show();

    int returnCode = app.exec();
    for (int i = 1; i <= CANTIDAD_CAJEROS; i++) {
        char str[8];
        sprintf(str, "/cola%c", i + 96);
        mq_unlink(str);
        sem_unlink(str);
    }
    return returnCode;
}
